/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package optimizacion;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Formatter;
import optimizacion.distribuciones.MersenneTwisterFast;

/**
 *
 * @author ricardo
 */
public class BusquedaTabu {

    private cafeteria modelo = new cafeteria();

    private ArrayList<Tupla> crearVecindario() {
        ArrayList<Tupla> vecinos = new ArrayList<>();
        int lq = 80;
        int rq = 120;
        int br = 1;
        int tr = 500;
        for (int i = lq; i < rq + 1; i++) {
            for (int j = br; j < tr + 1; j++) {
                vecinos.add(new Tupla(i, j));
            }
        }
        return vecinos;
    }

    public Resultado search(int v,int p) {
        ArrayList<Tupla> listaTabu = new ArrayList<>();
        Tupla rpta = new Tupla(v,p);
        listaTabu.add(rpta);
        double ganancias = modelo.gananciasDia(rpta.B, rpta.A);
        ArrayList<Tupla> vecinos = crearVecindario();
        for (Tupla tupla : vecinos) {
            if (!listaTabu.contains(tupla)) {
                listaTabu.add(tupla);
                double gananciaLocal = modelo.gananciasDia(tupla.B, tupla.A);
                if (ganancias < gananciaLocal) {
                    ganancias = gananciaLocal;
                    rpta = tupla;
                }
            }
        }
        //NumberFormat f = NumberFormat.getCurrencyInstance();
        //System.out.println("Resultado = " + rpta + " Ganancia = " + f.format(ganancias));
        Resultado r = new Resultado(rpta.A, rpta.B, ganancias);
        return r;
    }
}
